import { Camera } from './behaviours/Camera';
import { BoxCollider, CircleCollider, EdgeCollider } from './behaviours/Collider';
import { MainRolePrefabBinding } from './bindings/MainRolePrefabBinding';
import { PhysicsWorld } from './behaviours/PhysicsWorld';
import { RigidBody } from './behaviours/RigidBody';
import { Rotatable } from './behaviours/Rotatable';
import { ShapeRectRenderer } from './behaviours/ShapeRectRenderer';
import { Walkable } from './behaviours/Walkable';
import { WallPrefabBinding } from './bindings/WallPrefabBinding';
import { GameEngine, registerBehaviourClass, registerPrefabBehaviourClass } from './engine';
import { AnimationRenderer } from './engine/AnimationRenderer';
import { BitmapRenderer } from './engine/BitmapRenderer';
import { TextRenderer } from './engine/TextRenderer';
import { Transform } from './engine/Transform';
import { RoleTestPrefabBinding } from './bindings/RoleTestPrefabBinding';
import { Wall1PrefabBinding } from './bindings/Wall1PrefabBinding';
import { Trap1PrefabBinding } from './bindings/Trap1PrefabBinding';
import { Wall2PrefabBinding } from './bindings/Wall2PrefabBinding';
import { GrassPrefabBinding } from './bindings/GrassPrefabBinding';
import { Trap2PrefabBinding } from './bindings/Trap2PrefabBinding';
import { Trap2fPrefabBinding } from './bindings/Trap2fPrefabBinding';
import { Scene1PrefabBinding } from './bindings/Scene1PrefabBinding';
import { StartPrefabBinding } from './bindings/StartPrefabBinding';
import { Button1PrefabBinding } from './bindings/Button1PrefabBinding';
import { Button2PrefabBinding } from './bindings/Button2PrefabBinding';
import { Scene2PrefabBinding } from './bindings/Scene2PrefabBinding';
import { IntroductionPrefabBinding } from './bindings/IntroductionPrefabBinding';
import { Button3PrefabBinding } from './bindings/Button3PrefabBinding';
import { Button4PrefabBinding } from './bindings/Button4PrefabBinding';
import { EmptyPrefabBinding } from './bindings/EmptyPrefabBinding';
import { Scene3PrefabBinding } from './bindings/Scene3PrefabBinding';
import { Scene4PrefabBinding } from './bindings/Scene4PrefabBinding';
import { IronPrefabBinding } from './bindings/IronPrefabBinding';
import { GearPrefabBinding } from './bindings/GearPrefabBinding';
import { ForestPrefabBinding } from './bindings/ForestPrefabBinding';
import { MushroomPrefabBinding } from './bindings/MushroomPrefabBinding';
import { Iron1PrefabBinding } from './bindings/Iron1PrefabBinding';
import { Iron2PrefabBinding } from './bindings/Iron2PrefabBinding';
import { Trap5PrefabBinding } from './bindings/Trap5PrefabBinding';
import { Button5PrefabBinding } from './bindings/Button5PrefabBinding';
import { Dead3PrefabBinding } from './bindings/Dead3PrefabBinding';
import { Grass4PrefabBinding } from './bindings/Grass4PrefabBinding';
import { Ending1PrefabBinding } from './bindings/Ending1PrefabBinding';
import { Ending2PrefabBinding } from './bindings/Ending2PrefabBinding';
import { Dead1PrefabBinding } from './bindings/Dead1PrefabBinding';
import { Dead2PrefabBinding } from './bindings/Dead2PrefabBinding';
import { Dead4PrefabBinding } from './bindings/Dead4PrefabBinding';
import { Dead5PrefabBinding } from './bindings/Dead5PrefabBinding';
import { Grass2PrefabBinding } from './bindings/Grass2PrefabBinding';
import { Grass5PrefabBinding } from './bindings/Grass5PrefabBinding';
import { Grass8PrefabBinding } from './bindings/Grass8PrefabBinding';
import { Sand2PrefabBinding } from './bindings/Sand2PrefabBinding';
import { Sand3PrefabBinding } from './bindings/Sand3PrefabBinding';
import { Sand6PrefabBinding } from './bindings/Sand6PrefabBinding';
import { Forest3PrefabBinding } from './bindings/Forest3PrefabBinding';
import { Forest2PrefabBinding } from './bindings/Forest2PrefabBinding';
import { Forest7PrefabBinding } from './bindings/Forest7PrefabBinding';
import { Iron22PrefabBinding } from './bindings/Iron22PrefabBinding';
import { Iron3PrefabBinding } from './bindings/Iron3PrefabBinding';
import { Iron5PrefabBinding } from './bindings/Iron5PrefabBinding';
import { Iron6PrefabBinding } from './bindings/Iron6PrefabBinding';
import { Iron12PrefabBinding } from './bindings/Iron12PrefabBinding';
import { Iron13PrefabBinding } from './bindings/Iron13prefabBinding';
import { Iron16PrefabBinding } from './bindings/Iron16PrefabBinding';

registerBehaviourClass(Transform);
registerBehaviourClass(TextRenderer);
registerBehaviourClass(BitmapRenderer);
registerBehaviourClass(Walkable);
registerBehaviourClass(Rotatable);
registerBehaviourClass(ShapeRectRenderer);
registerBehaviourClass(RigidBody);
registerBehaviourClass(BoxCollider);
registerBehaviourClass(CircleCollider);
registerBehaviourClass(EdgeCollider);
registerBehaviourClass(Camera);
registerBehaviourClass(AnimationRenderer);
registerBehaviourClass(PhysicsWorld);
registerPrefabBehaviourClass(MainRolePrefabBinding, './assets/prefabs/mainRole.yaml')
registerPrefabBehaviourClass(WallPrefabBinding, './assets/prefabs/wall.yaml')
registerPrefabBehaviourClass(RoleTestPrefabBinding, './assets/prefabs/roletest.yaml')
registerPrefabBehaviourClass(Wall1PrefabBinding, './assets/prefabs/wall1.yaml')
registerPrefabBehaviourClass(Trap1PrefabBinding, './assets/prefabs/trap1.yaml')
registerPrefabBehaviourClass(Wall2PrefabBinding, './assets/prefabs/wall2.yaml')
registerPrefabBehaviourClass(GrassPrefabBinding, './assets/prefabs/grasswall.yaml')
registerPrefabBehaviourClass(Trap2PrefabBinding, './assets/prefabs/trap2.yaml')
registerPrefabBehaviourClass(Trap2fPrefabBinding, './assets/prefabs/trap2f.yaml')
registerPrefabBehaviourClass(Scene1PrefabBinding, './assets/prefabs/Scene1.yaml')
registerPrefabBehaviourClass(StartPrefabBinding, './assets/prefabs/Start.yaml')
registerPrefabBehaviourClass(Dead3PrefabBinding, './assets/prefabs/Dead3.yaml')
registerPrefabBehaviourClass(Dead1PrefabBinding, './assets/prefabs/Dead1.yaml')
registerPrefabBehaviourClass(Dead2PrefabBinding, './assets/prefabs/Dead2.yaml')
registerPrefabBehaviourClass(Dead4PrefabBinding, './assets/prefabs/Dead4.yaml')
registerPrefabBehaviourClass(Dead5PrefabBinding, './assets/prefabs/Dead5.yaml')
registerPrefabBehaviourClass(Button1PrefabBinding, './assets/prefabs/button1.yaml')
registerPrefabBehaviourClass(Button2PrefabBinding, './assets/prefabs/button2.yaml')
registerPrefabBehaviourClass(Button3PrefabBinding, './assets/prefabs/button3.yaml')
registerPrefabBehaviourClass(Button4PrefabBinding, './assets/prefabs/button4.yaml')
registerPrefabBehaviourClass(Button5PrefabBinding, './assets/prefabs/button5.yaml')
registerPrefabBehaviourClass(Scene2PrefabBinding, './assets/prefabs/Scene2.yaml')
registerPrefabBehaviourClass(IntroductionPrefabBinding, './assets/prefabs/Introduction.yaml')
registerPrefabBehaviourClass(EmptyPrefabBinding, './assets/prefabs/empty.yaml')
registerPrefabBehaviourClass(Scene3PrefabBinding, './assets/prefabs/Scene3.yaml')
registerPrefabBehaviourClass(Scene4PrefabBinding, './assets/prefabs/Scene4.yaml')
registerPrefabBehaviourClass(IronPrefabBinding, './assets/prefabs/iron.yaml')
registerPrefabBehaviourClass(GearPrefabBinding, './assets/prefabs/gear.yaml')
registerPrefabBehaviourClass(ForestPrefabBinding, './assets/prefabs/forest.yaml')
registerPrefabBehaviourClass(MushroomPrefabBinding, './assets/prefabs/mushroom.yaml')
registerPrefabBehaviourClass(Iron1PrefabBinding, './assets/prefabs/iron1.yaml')
registerPrefabBehaviourClass(Iron2PrefabBinding, './assets/prefabs/iron2.yaml')
registerPrefabBehaviourClass(Trap5PrefabBinding, './assets/prefabs/trap5.yaml')
registerPrefabBehaviourClass(Grass4PrefabBinding, './assets/prefabs/4grass.yaml')
registerPrefabBehaviourClass(Grass2PrefabBinding, './assets/prefabs/2grass.yaml')
registerPrefabBehaviourClass(Grass5PrefabBinding, './assets/prefabs/5grass.yaml')
registerPrefabBehaviourClass(Grass8PrefabBinding, './assets/prefabs/8grass.yaml')
registerPrefabBehaviourClass(Sand2PrefabBinding, './assets/prefabs/2sand.yaml')
registerPrefabBehaviourClass(Sand3PrefabBinding, './assets/prefabs/3sand.yaml')
registerPrefabBehaviourClass(Sand6PrefabBinding, './assets/prefabs/6sand.yaml')
registerPrefabBehaviourClass(Forest3PrefabBinding, './assets/prefabs/3forest.yaml')
registerPrefabBehaviourClass(Forest2PrefabBinding, './assets/prefabs/2forest.yaml')
registerPrefabBehaviourClass(Forest7PrefabBinding, './assets/prefabs/7forest.yaml')
registerPrefabBehaviourClass(Iron22PrefabBinding, './assets/prefabs/2iron.yaml')
registerPrefabBehaviourClass(Iron3PrefabBinding, './assets/prefabs/3iron.yaml')
registerPrefabBehaviourClass(Iron5PrefabBinding, './assets/prefabs/5iron.yaml')
registerPrefabBehaviourClass(Iron6PrefabBinding, './assets/prefabs/6iron.yaml')
registerPrefabBehaviourClass(Iron12PrefabBinding, './assets/prefabs/2iron1.yaml')
registerPrefabBehaviourClass(Iron13PrefabBinding, './assets/prefabs/3iron1.yaml')
registerPrefabBehaviourClass(Iron16PrefabBinding, './assets/prefabs/6iron1.yaml')
registerPrefabBehaviourClass(Ending1PrefabBinding, './assets/prefabs/Ending1.yaml')
registerPrefabBehaviourClass(Ending2PrefabBinding, './assets/prefabs/Ending2.yaml')
const engine = new GameEngine()
engine.start()